package com.streambolics.std;

/**
 * An object encapsulating what you need to know about an HTTP client.
 * 
 * @author Sauron
 * 
 */

public class WebClientInfo implements HtmlCapabilities
{
    @Override
    public boolean hasDatePicker ()
    {
        return false;
    }

    @Override
    public boolean hasSliders ()
    {
        return false;
    }

    @Override
    public boolean hasSpinBoxes ()
    {
        return false;
    }

    /**
     * Whether the client is using a mobile version of the application.
     * <p>
     * If true, user output must be generated in a way suited for small screens
     * and no easy keyboard interaction.
     * </p>
     * 
     * @return
     */

    public boolean isMobile ()
    {
        return false;
    }

    /**
     * Whether the client is using a RIA version of the application.
     * <p>
     * If true, the generated HTML will typically download a full AJAX
     * application instead of a simple HTML page.
     * </p>
     * <p>
     * Note that in this case, the client side application will usually be
     * downloaded once, then issue additional requests using AJAX, where
     * isUser() is false.
     * </p>
     * 
     * @return
     */

    public boolean isRia ()
    {
        return false;
    }

    /**
     * Whether the client is a human user.
     * <p>
     * If true, it is assumed that the output will be read by an actual human,
     * the expected output is therefore some kind of formatted readable text,
     * typically formatted in HTML.
     * </p>
     * <p>
     * If false, it is assumed that the output will be read by a client side
     * application (eg AJAX, Android activity, etc.) and the expected output is
     * therefore some kind of structured data such as XML, INI, CSV, YAML,
     * etc...
     * </p>
     * 
     * @return
     */

    public boolean isUser ()
    {
        return true;
    }

}
